package com.sse.conexion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Random;

import com.sse.VO.CasaVO;
import com.sse.VO.TagVO;

public class ManejadorTags {

	public static ArrayList<TagVO> obtenerTags() throws Exception {
		ArrayList<TagVO> lTags = new ArrayList<TagVO>();

		Connection con = ConectorBD.getConexion();
		Statement sqlStatement = con.createStatement();
		ResultSet rs = null;

		rs = sqlStatement.executeQuery(" select cas_id, tag_id, tag_nombre from tags");

		while (rs.next()) {

			TagVO vo = new TagVO();

			vo.setCasaIdentificador(rs.getInt("cas_id"));
			vo.setIdentificador(rs.getInt("tag_id"));
			vo.setDescripcion(rs.getString("tag_nombre"));

			lTags.add(vo);
		}

		con.close();

		return lTags;
	}

	public static int ingresarTag(TagVO vo) throws Exception {
		String strSql = "INSERT INTO tags(" + 
			"cas_id," + "tag_id," + "tag_nombre" + ") VALUES (?,?,?)";

		Connection con = ConectorBD.getConexion();
		PreparedStatement pstmt = con.prepareStatement(strSql);

		pstmt.setInt(1, vo.getCasaIdentificador());
		pstmt.setInt(2, vo.getIdentificador());
		pstmt.setString(3, vo.getDescripcion());

		int resultado = pstmt.executeUpdate();

		con.close();

		return resultado;
	}
	
	public static void main(String[] args) throws Exception {

		// SE OBTIENE LAS CASAS
		ArrayList<CasaVO> lCasaVo = ManejadorCasa.obtenerCasas();

		Random rnd = new Random();

		// SE RECORREN LOS CASAS
		for (int j = 0; j < lCasaVo.size(); j++) {

			// SE CREAN 50 SENSORES aleatorios
			for (int i = 0; i < rnd.nextInt(50); i++) {
				
				TagVO vo = new TagVO();

				vo.setIdentificador(i);
				vo.setCasaIdentificador(lCasaVo.get(j).getIdentificador());

				int tipoSensor = rnd.nextInt(5);

				switch (tipoSensor) {
				case 1:					
					vo.setDescripcion("LCD" + i);	
					ingresarTag(vo);
					break;
				case 2:					
					vo.setDescripcion("NEVERA" + i);	
					ingresarTag(vo);
					break;
				case 3:					
					vo.setDescripcion("PC" + i);	
					ingresarTag(vo);
					break;
				}
			}
		}
		// Tags en la DB
		System.out.println(obtenerTags().size());

	}

}
